Sinewave Shotgun
完全プロシージャル
GLSLでは当然フィルターなんて実装できないので、
代わりに大量のサイン波を用いて不協和音をばら撒き、それっぽいハイハット音を作り出す サイン波を大量に生成しなければならない都合上、CPUでの生成はやや不適 code:glsl
vec2 shotgun(float t, float spread, float snap) {
vec2 sum = vec2(0.0);
for (int i = 0; i < 64; i ++) {
vec3 dice = hash3f(vec3(i));
float partial = exp2(spread * dice.x);
partial = mix(partial, floor(partial + 0.5), snap);
sum += vec2(sin(TAU * t * partial)) * rotate2D(TAU * dice.y);
}
return sum / 64.0;
}
snap というパラメータを上げていくと、ばら撒かれた不協和音が整数倍に近づき、整った音に近づく
Dittytoy
Desmos